package main

import "fmt"

func main()  {
	/*
	 位运算符：将数值转为二进制，按位操作
	&：按位与，都为1才为1，有一个为0就为0
	|：按位或，都为0才为0，有衣蛾为1就为1
	^：异或操作，不同为1，相同为0
	<<：左移， A << B,将A转为二进制，向左移动B位
		相当于A*2的B次方
	>>：右移，A >> B,向右移动B位
	 */
	 a := 60
	 b := 13

	 /*
	 60=32+16+8+4
	 13=8+4+1
	 a: 0011 1100
	 b: 0000 1101
	 &: 0000 1100
	 |：0011 1101
	 ^：0011 0001
	  */
	res1 := a & b
	res2 := a | b
	res3 := a ^ b
	 fmt.Println(res1) // 12
	 fmt.Println(res2) // 61
	 fmt.Println(res3) // 49
	 fmt.Printf("%b,%b\n", a, b)

	 /*
	 b = 13
	 b:  0000 1101
	 <<2:00 110100  = 32+16+4
	 >>2:0000 0011
	  */
	  res4 := b << 2
	  b = 13
	  res5 := b >> 2
	  fmt.Println(res4, res5)

}
